package com.chzc.util;


import com.chzc.entity.DevilMessage;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToByteEncoder;

/**
 * 自定义编码器
 * @author cv大魔王
 * @version 1.0
 * @date 2021/7/2 9:51
 */
public class DevilMessageEncoder extends  MessageToByteEncoder<DevilMessage> {
    @Override
    protected void encode(ChannelHandlerContext channelHandlerContext, DevilMessage msg, ByteBuf byteBuf) throws Exception {
        // 将长度写出去
        byteBuf.writeInt(msg.getLen());
        // 将内容写出去
        byteBuf.writeBytes(msg.getContent());

        // 将队列id长度写出去
        byteBuf.writeInt(msg.getMessageIdLen());

        // 将队列id写出去
        byteBuf.writeBytes(msg.getMessageId());

        // 将队列长度写出去
        byteBuf.writeInt(msg.getQueueLen());

        // 将队列名称写出去
        byteBuf.writeBytes(msg.getQueueName());

        // 将队列状态写出去
        byteBuf.writeInt(msg.getStatus());

        // 将是否是心跳数据包类型写出去
        byteBuf.writeBoolean(msg.isPingType());
    }
}
